package cn.web.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*
本章节主要区分的是forward和redirect,转发的路径可以不用加虚拟目录，因为它是在服务器内部进行分发，肯定不会超出虚拟路径外面
但是重定向最好加上虚拟路径，也就是要使得客户端能够区分它是哪个项目，因为重定向可以在不同服务器站点跳跃。
最终总结
1。在执行跳转操作的时候，定义的规则是给谁看的，如果是给服务器看的，那么他的跳跃范围肯定不会出该服务器，所以不用加项目路径
若是给客户端看的，客户端可以访问很多服务器，很多项目，所以就要把路径补全。
 */

@WebServlet("/ResponseDemo1")
public class ResponseDemo1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//                response.setStatus(302);  // 设置请求行代码
//                response.setHeader("location","ResponseDemo2");  // 设置重定向头和路径
        response.sendRedirect("/virtualpath/ResponseDemo2");    // 重定向简便写法    // 这里是相对路径写法 。/可以省略  。。/ 是向上退一级的目录
        System.out.println("demo1");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                doPost(request,response);
    }
}
/*
注意区分重定向和转发
转发也叫做分发器
1转发地址栏路径不变
2转发只能访问当前服务器下的资源
3转发是一次请求，可以使用request对象共享数据（request域）
重定向与分发完全相反
1。重定向地址栏发生了跳转
2。转发可以访问别的服务器站点
3。重定向是两次请求。不能使用request对象共享数据
 */
